Code sample Home

Writes contents of each clip rectangle into separate drawing file
void DemoExpEntities (HANDLE hLcWnd)
{
  HANDLE hEnt, hCRect, hDrw, hBlock;
  HANDLE hDrw2, hBlock2, hPline2;
  int nPlines, nVers, i, j, iRect, nFiles;
  double X, Y;
  WCHAR szFileName[64], szBuf[128];

  // get drawing and block, linked with CAD window
  hDrw = lcPropGetHandle( hLcWnd, LC_PROP_WND_DRW );
  hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_BLOCK );
  nFiles = 0;
  iRect = 0;
  hCRect = lcCRectsGetFirst( hDrw );
  while( hCRect != 0 ){
    ++iRect;
    lcCRectsActive( hDrw, hCRect );
    hEnt = lcBlockGetFirstEnt( hBlock );
    while( hEnt ){
      nPlines = lcExpEntity( hEnt, 0, LC_EXP_ALL, TRUE );
      if (nPlines > 0){
        hDrw2 = lcCreateDrawing();
        lcDrwNew( hDrw2, L"", NULL );
        hBlock2 = lcPropGetHandle( hDrw2, LC_PROP_DRW_BLOCK_MODEL );
        hPline2 = lcBlockAddPolyline( hBlock2, 0, FALSE, FALSE );
        for (i=0; i<nPlines; ++i){
          nVers = lcExpGetPline( 0.0 );
          for (j=0; j<nVers; ++j){
            if (lcExpGetVertex( &X, &Y ) == TRUE){
              lcPlineAddVer( hPline2, 0, X, Y );
            }
          }
          lcPlineEnd( hPline2 );
        }
        swprintf( szFileName, L"C:/Test/ClipRect_%d.zcd", iRect );
        if (lcDrwSave( hDrw2, szFileName, FALSE, 0 ) == TRUE){
          ++nFiles;
        }
        lcDeleteDrawing( hDrw2 );
        hDrw2 = 0;
      }
      hEnt = lcBlockGetNextEnt( hBlock, hEnt );
    }
    hCRect = lcCRectsGetNext( hDrw, hCRect );
  }
  if (nFiles > 0){
    swprintf( szBuf, L"%d files was written with names\nC:/Test/ClipRect_n.zcd", nFiles );
    lcWndMessage( hLcWnd, szBuf, MB_OK|MB_ICONINFORMATION );
  }else{
    lcWndMessage( hLcWnd, L"Files was not written", MB_OK|MB_ICONSTOP );
  }
}